//
//  Person.h
//  08-IOS9新特性(Nullability,泛型,_kindof)
//
//  Created by dllo on 16/7/13.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
// NULLability (只能用在对象类型上)是在编译层次上加了一些改动
// 优点事方便别人查看编译的时候,是否为空,有提示明确
// nonull 声明的属性,不能为空(getter setter)
@interface Person : NSObject
@property (nonnull, nonatomic, copy) NSString *name;
// nullable 声明的属性,是可以为空
@property (nullable, nonatomic, copy) NSString *sex;
// 还可以换种写法nonnull
@property (nonatomic, copy) NSString *__nonnull address;
@property (nonatomic, copy) NSString *__nullable habits;
@property (nonatomic, copy) NSString *_Nullable height;

//@property (nonnull,nonatomic,assign) NSInteger number;
// 错误:非指针的类型不能用nonnull
@property (null_resettable, nonatomic, strong) NSArray *friends;
// 上面有nonnull修饰,如果friends 不修饰会报黄提示你写上那种修饰

@property (nonatomic, strong) NSDictionary *dic;
// 当用 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 收尾括起来会解决该问题(修饰符一致性)
// NS_ASSUME_NONNULL_BEGIN
// NS_ASSUME_NONNULL_END
// 一般应用于头文件.h,一般将声明包含起来
// 针对所有属性,添加nonnull 修饰 (功能)
// 也就是说,除了nullable 和null_resttable需要加修饰,其他都不需要

@end
NS_ASSUME_NONNULL_END